package com.xwx.common.interceptor;
import java.util.HashMap;
import java.util.Map;
import org.apache.log4j.Logger;
import com.jfinal.aop.Interceptor;
import com.jfinal.aop.Invocation;
import com.jfinal.core.Controller;
import com.jfinal.kit.PropKit;
import com.jfinal.render.JsonRender;
import com.xwx.common.model.UserModel;
/**
 * 用于验证用户是否登录
 * 支持ajax与普通请求处理
 * 使用该拦截器时请配置CommonConstant.DEFAULT_LOGIN_PAGE以确保可以正确返回登录页
* @Description:session非空验证拦截器
* @author:Dream QQ:68697015
* @time:2015年8月20日 上午10:58:11
 */
public class SessionValidateInterceptor implements Interceptor{
	protected Logger log=Logger.getLogger(getClass());
	
	@Override
	public void intercept(Invocation inv) {
		Controller c = inv.getController();
		UserModel um = c.getSessionAttr(PropKit.get("userSessionKey"));
		if(um==null){
			log.info("未登录或登录过期,请重新登录");
			//判断请求类型
			String header = c.getRequest().getHeader("X-Requested-With");
			boolean isAjax = "XMLHttpRequest".equalsIgnoreCase(header);
			if(isAjax){
				Map<String,Object>json=new HashMap<String,Object>();
				json.put("flag", -1);
				json.put("msg", "未登录或登录过期,请重新登录");
				c.renderJson(new JsonRender(json).forIE());				
			}else{
				c.setAttr(PropKit.get("errorKey"), "未登录或登录过期,请重新登录");
				//c.render(CommonConstant.DEFAULT_LOGIN_PAGE);
				//使用重定向
				c.redirect(PropKit.get("login"));
			}
		}else{
			inv.invoke();
		}
	}

}
